import { Modal } from 'ant-design-vue';
import cloneDeep from 'lodash/cloneDeep';
import {
  TransactorNodeProperty,
  ApproveNodeProperty,
  CopyNodeProperty,
  StartNodeProperty,
  EndNodeProperty,
} from '@/model/designer/controlProperty';

export const GetLogicMenu = (lf: any, type = 'node') => {
  const menu = [
    {
      text: '编辑',
      callback(node: { [key: string]: any }) {
        lf.editText(node.id);
      },
    },
    {
      text: '复制',
      callback(node: { [key: string]: any }) {
        lf.cloneNode(node.id);
      },
    },
    {
      text: '删除',
      callback(node: { [key: string]: any }) {
        Modal.confirm({
          title: '删除',
          content: '你确定删除选中的数据吗？',
          onOk() {
            lf.deleteElement(node.id);
          },
        });
      },
    },
  ];
  if (type === 'node') return menu;
  return menu.filter((it) => it.text !== '复制');
};

export const GetLogicPanel = (lf: any) => {
  // type        string  非必须  无  指定用户鼠标可以拖入的节点类型，包括自定义节点类型， 不传则不会创建节点，只会触发 callback
  // text        string  非必须  无  创建节点的文本
  // properties  object  非必须  无  创建节点的 properties
  // label       string  非必须  无  拖拽面板节点文本描述
  // icon        string  非必须  无  拖拽面板上显示的图标，可以传入图标 url 地址或 base64 编码
  // className   string  非必须  无  额外传入可以拖拽项的 class, 用于自定义拖拽项的样式
  // callback    fn      非必须  无  用户鼠标按下拖拽项后触发的回调
  const menu = [
    {
      label: '选区',
      icon: '',
      className: 'select-node',
      callback: () => {
        lf.extension.selectionSelect.openSelectionSelect();
        lf.once('selection:selected', () => {
          lf.extension.selectionSelect.closeSelectionSelect();
        });
      },
    },
    {
      type: 'start',
      text: '开始',
      label: '开始节点',
      properties: cloneDeep(StartNodeProperty),
      icon: '',
    },
    {
      type: 'transactor',
      text: '经办节点',
      label: '经办节点',
      properties: cloneDeep(TransactorNodeProperty),
      icon: '',
    },
    {
      type: 'approve',
      text: '审批节点',
      label: '审批节点',
      properties: cloneDeep(ApproveNodeProperty),
      icon: '',
    },
    {
      type: 'copy',
      text: '抄送节点',
      label: '抄送节点',
      properties: cloneDeep(CopyNodeProperty),
      icon: '',
    },
    // {
    //   type: 'condition',
    //   text: '是',
    //   label: '条件判断',
    //   properties: cloneDeep(NodeProperty),
    //   icon: '',
    // },
    {
      type: 'end',
      text: '结束',
      label: '结束节点',
      properties: cloneDeep(EndNodeProperty),
      icon: '',
    },
  ];
  return menu;
};
